package com.ruoyi.app.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.app.domain.AppStory;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
 * APP用户信息视图对象 app_user
 *
 * @author ruoyi
 * @date 2025-12-08
 */
@Data
@ExcelIgnoreUnannotated
public class UserVo {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    private Long id;

    /**
     * 环信uuid
     */
    @ExcelProperty(value = "环信uuid")
    private String uuid;

    /**
     * 用户昵称
     */
    private String nickName;


    private String userName;

    /**
     * 用户性别（0=男 1=女 2=未知）
     */
    @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0==男,1==女,2==未知")
    private String sex;

    /**
     * 头像地址
     */
    @ExcelProperty(value = "头像地址")
    private String avatar;

    /**
     * 背景图片
     */
    @ExcelProperty(value = "背景图片")
    private String photo;

    /**
     * 身份证号码
     */
    private String code;

    /**
     * 身份证姓名
     */
    private String codeName;

    /**
     * 职业
     */
    @ExcelProperty(value = "职业")
    private String occupation;

    /**
     * 学校
     */
    @ExcelProperty(value = "学校")
    private String school;

    /**
     * 出生年月
     */
    @ExcelProperty(value = "出生年月")
    private Long birthday;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 星座
     */
    private String constellation;

    /**
     * 身高(cm)
     */
    @ExcelProperty(value = "身高(cm)")
    private Integer height;

    /**
     * 个性签名
     */
    private String signature;

    /**
     * 帐号类型(0=用户注册，1=自动注册)
     */
    private String register;

    private String status;

    /**
     * 帐号状态（0=不在线 1=在线 ）
     */
    private String onlineStatus;

    /**
     * 多张生活照片信息
     */
    private List<AppUserImageVo> photos;

    /**
     * 交友目的
     */
    private String target;

    /**
     * 交友目的状态(0=所有人可见,1=相同目的可见,2=不可见)
     */
    private String targetStatus;

    /**
     * 家乡
     */
    private String home;

    /**
     * 居住地省份
     */
    private String province;

    /**
     * 居住地城市
     */
    private String city;

    /**
     * 居住地
     */
    private String habitation;

    /**
     * 注册时间
     */
    private Date createTime;

    /**
     * 最后登录时间
     */
    private Date loginDate;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 喜欢我的粉丝数量
     */
    private Integer fans;

    /**
     * 我喜欢的关注数量
     */
    private Integer likes;

    /**
     * 喜欢我的用户数量
     */
    private Integer likeMy;

    /**
     * 我喜欢的用户数量
     */
    private Integer myLike;

    /**
     * 我的动态图片
     */
    private List<AppDynamicVideoVo> dynamicVos;


    /**
     * 用户喜欢标签信息
     */
    private List<AppLabelLikeVo> likeLabels;

    /**
     * 用户超级喜欢标签信息
     */
    private List<AppLabelLikeVo> superLikeLabels;

    /**
     * 交友目的文本
     */
    private String targetText;

    /**
     * 交友目的状态文本
     */
    private String targetStatusText;


    /**
     * 超级喜欢的原因
     */
    private String cause;

    /**
     * 标签共同点
     */
    private Integer commonNumber;

    /**
     * 群组身份信息
     */
    private AppGroupUserVo appGroupUserVo;

    /**
     * 我和对方用户的关系("0"="未关注"，"1"=已关注，"2"=好友)
     */
    private String isRelation;

    /**
     * 对方用户和我的关系("1" = 喜欢，"0" = 超级喜欢)
     */
    private String isLikeRelation;

    /**
     * 距离附近用户的距离
     */
    private Integer distance;

    /**
     * 距离附近用户的距离文本
     */
    private String distanceText;

    /**
     * 居住地省份名称
     */
    private String provinceName;

    /**
     * 居住地城市名称
     */
    private String cityName;

    /**
     * 打招呼内容
     */
    private String context;

    /**
     * 纬度
     */
    private Double latitude;
    /**
     * 经度
     */
    private Double longitude;

    /**
     * 排序时间
     */
    private Date sortTime;

    /**
     * 实名认证状态
     */
    private Boolean isRealName;

    /**
     * 用户相关任务大分类列表
     */
    private Object totalTypeVos;

    /**
     * 用户的积分
     */
    private Long integral;

    /**
     * 我的故事墙
     */
    private List<AppStoryVo> sotryList;

    /**
     * 用户腾讯签名
     */
    private String userSign;

    /**
     * 靓号
     */
    private String accountNumber;

    /**
     * 设备唯一标识
     */
    private String uniqueCode;

    /**
     * 用户VIP信息
     */
    private AppUserVipVo vipVo;

    /**
     * 用户等级
     */
    private Long level;

    /**
     * 销售等级
     */
    private Long salesLevel;

    /**
     * 等级实体
     */
    private AppLevelVo levelVo;

    /**
     * 销售等级实体
     */
    private AppSalesLevelVo salesLevelVo;


    /**
     * 微信二维码
     */
    private String wxImg;

    /**
     * 支付宝二维码
     */
    private String aliImg;

    /**
     * 银行卡号
     */
    private String bankCode;

    /**
     * 持卡人姓名
     */
    private String bankName;

    /**
     * 银行卡开户行
     */
    private String bankType;

    /**
     * 搜索类型0 都可以 1id 2手机号 3啥也不是
     */
    private Integer searchType;

    /**
     * 搜索类型(0=允许 1拒绝) 是否可以搜索id
     */
    private Integer searchId;

    /**
     * 搜索类型(0允许 1拒绝) 是否可以搜索手机号
     */
    private Integer searchPhone;

}
